//--------------------------------------------------------------------------------
// This file is a portion of the D2D1Renderer.  It is distributed
// under the MIT License, available in the root of this distribution and 
// at the following URL:
//
// http://www.opensource.org/licenses/mit-license.php
//
// Copyright (c) Mirco Timmermann
//
//--------------------------------------------------------------------------------
#pragma once 

#include "..\Events\Messages\KeyboardEvent.h"
#include "..\Events\Messages\MouseEvent.h"

class IInput {
public:
	virtual void OnKeyUp(const KeyboardEvent &e) = 0;
	virtual void OnKeyDown(const KeyboardEvent &e) = 0;

	virtual void OnMouseOver(const MouseEvent &e) = 0;
	virtual void OnMouseOut(const MouseEvent &e) = 0;

	virtual void OnMouseMove(const MouseEvent &e) = 0;
	virtual void OnMouseWheel(const MouseEvent &e) = 0;

	virtual void OnFocusLost(const MouseEvent &e) = 0;

	virtual void OnMouseDown0(const MouseEvent &e) = 0;
	virtual void OnMouseUp0(const MouseEvent &e) = 0;
	virtual void OnMouseLeave0(const MouseEvent &e) = 0;
	virtual void OnMouseRaise0(const MouseEvent &e) = 0;
	virtual void OnMouseDrag0(const MouseEvent &e) = 0;
	virtual void OnMouseDoubleClick0(const MouseEvent &e) = 0;

	virtual void OnMouseDown1(const MouseEvent &e) = 0;
	virtual void OnMouseUp1(const MouseEvent &e) = 0;
	virtual void OnMouseLeave1(const MouseEvent &e) = 0;
	virtual void OnMouseRaise1(const MouseEvent &e) = 0;
	virtual void OnMouseDrag1(const MouseEvent &e) = 0;
	virtual void OnMouseDoubleClick1(const MouseEvent &e) = 0;

	virtual void OnMouseDown2(const MouseEvent &e) = 0;
	virtual void OnMouseUp2(const MouseEvent &e) = 0;
	virtual void OnMouseLeave2(const MouseEvent &e) = 0;
	virtual void OnMouseRaise2(const MouseEvent &e) = 0;
	virtual void OnMouseDrag2(const MouseEvent &e) = 0;
	virtual void OnMouseDoubleClick2(const MouseEvent &e) = 0;

	virtual void OnMouseDown3(const MouseEvent &e) = 0;
	virtual void OnMouseUp3(const MouseEvent &e) = 0;
	virtual void OnMouseLeave3(const MouseEvent &e) = 0;
	virtual void OnMouseRaise3(const MouseEvent &e) = 0;
	virtual void OnMouseDrag3(const MouseEvent &e) = 0;
	virtual void OnMouseDoubleClick3(const MouseEvent &e) = 0;

	virtual void OnMouseDown4(const MouseEvent &e) = 0;
	virtual void OnMouseUp4(const MouseEvent &e) = 0;
	virtual void OnMouseLeave4(const MouseEvent &e) = 0;
	virtual void OnMouseRaise4(const MouseEvent &e) = 0;
	virtual void OnMouseDrag4(const MouseEvent &e) = 0;
	virtual void OnMouseDoubleClick4(const MouseEvent &e) = 0;

};